Modern operating systems enable various processors to be multi-tasking processors. In other words, two or more tasks can be executed substantially simultaneously. Typically, the operating system implements a task scheduling kernel that manages which tasks are executed by the processor. The priority scheduling algorithm may implement round-robin scheduling, fixed priority pre-emptive scheduling, or other types of scheduling algorithms well-known in the art. Conventionally, the scheduling algorithm is implemented via task objects (i.e., data structures) that are managed by a software kernel. Many operating systems implement a process priority with each process currently active within the operating system. For example, Microsoft Windows assigns one of 32 priority levels to each launched process, and a task manager kernel implements a multi-level feedback queue to manage the scheduling of the active processes for execution.
Many modern processors implement hardware based scheduling units that enable multiple tasks to be queued in hardware and dispatched for execution based on a particular scheduling algorithm implemented by the scheduling unit. However, in most systems, prioritizing processes for execution is still managed by software running in the background. For example, a hardware scheduling unit may be configured to execute whichever process has the highest priority. However, a software kernel is configured to adjust the priority level of each process to ensure that each process is allowed to execute and that dependent processes are executed in the correct order.
It will be appreciated that latency is introduced by the management of scheduling priority in software. The task scheduling kernel must be executed periodically to update priority levels in order to adjust which processes are being executed by the processor. In addition, by including software management of priority levels, the hardware scheduling unit must repeatedly make memory access requests to update priority levels of the different tasks. This latency creates a bottleneck that slows down the efficiency of the processor. Thus, there is a need for addressing this issue and/or other issues associated with the prior art.